package threadDemo03;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class TestDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        /**
         * 多线程的第三种实现方式
         *  特点：可以获取到多线程的运行结果
         *  1.创建一个MyCallable类实现callable接口
         *  2.重写call （是有返回值的，表示多线程运行的结果）
         *
         *  3.创建MyCallable对象（表示多线程要执行的任务）
         *  4.创建FutureTask对象（对象管理运行多线程的结果）
         *  5.创建thread类的对象，并启动(表示线程)
         */
        //创建MyCallable对象（表示多线程要执行的任务）
        MyCallable myCallable=new MyCallable();
        //创建FutureTask对象（对象管理运行多线程的结果）
        FutureTask<Integer>result=new FutureTask<>(myCallable);
        //创建thread类的对象，并启动(表示线程)
        Thread thread=new Thread(result);
        //启动线程
        thread.start();

        //获取多线程的运行结果
        Integer r = result.get();
        System.out.println(r);
    }
}
